package com.fcfactory.eggutils.documentUtil.service.impl;

import com.fcfactory.eggutils.common.RestResponse;
import com.fcfactory.eggutils.documentUtil.DiffHandleUtil;
import com.fcfactory.eggutils.documentUtil.Properties2YmlUtil;
import com.fcfactory.eggutils.documentUtil.service.DocumentUtilService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.io.File;
import java.io.IOException;
import java.util.List;

/**
 * @autuor 范大晨
 * @Date 2023/9/19 20:05
 * @description 文件处理工具service实现类
 */
@Service
@Slf4j
public class DocumentUtilServiceImpl implements DocumentUtilService {
    @Override
    public RestResponse propertiesToYml(String propertiesPath, String propertiesCharset, String ymlCharset) {
        try {
            Properties2YmlUtil.propertiesToYml(propertiesPath, propertiesCharset, ymlCharset);
            return RestResponse.success();
        } catch (Exception e) {
            e.printStackTrace();
            return RestResponse.err(e);
        }
    }

    /**
     * 对比两文件的差异，返回原始文件+diff格式
     *
     * @param filePathOriginal 原文件路径
     * @param filePathRevised  对比文件路径
     */
    @Override
    public RestResponse diffHandle(String filePathOriginal, String filePathRevised, String droducDirPath) {
        try {
            //对比 D:\n1.txt和 D:\n2.txt 两个文件，获得不同点
            List<String> diffString = DiffHandleUtil.diffString(filePathOriginal, filePathRevised);
            //在 目录下生成一个 diff.html 文件，打开便可看到两个文件的对比
            DiffHandleUtil.generateDiffHtml(diffString, droducDirPath);
            //把所需的 js和 css 从 resource 资源目录复制到 droducDirPath 目录下
//            DiffHandleUtil.copyfile(droducDirPath);
            String diffHtmlPath = droducDirPath + File.separator + "diff.html";
            log.info("对比完成,自动打开 " +diffHtmlPath);

            //自动使用默认浏览器打开html
            // 获取系统命令
            String os = System.getProperty("os.name").toLowerCase();
            if (os.contains("win")) {
                // Windows 系统使用默认浏览器打开
                Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + diffHtmlPath);
            } else if (os.contains("mac")) {
                // macOS 系统使用 Safari 打开
                Runtime.getRuntime().exec("open -a Safari " + diffHtmlPath);
            } else if (os.contains("nix") || os.contains("nux") || os.contains("bsd")) {
                // Linux 系统使用默认浏览器打开
                Runtime.getRuntime().exec("xdg-open " + diffHtmlPath);
            }
            return RestResponse.success();
        } catch (Exception e) {
            e.printStackTrace();
            return RestResponse.err(e);
        }
    }
}
